網站系統前端 40%
- 不要和DOM 奮戰了,擁抱MVVM(簡單來說就是資料的變化會反映到Html View的變化)
- 由於網站美工常用Booststrap搭配Jquery
- 推薦用VueJs因為和Booststrap及Jquery的PlugIn容易整合
中間層 20%
- 例如:ASP.NET MVC、JAVA Spring
- 當作MVC、Routing,資料拋轉就好
- 商務邏輯盡量不要寫在這裏
- 原因是資料皆從資料庫來,寫在這裡將資料庫拉到這裡,只是將事情複雜化和增多
- 太重物件導向是否是錯誤
資料庫層 40%
- 例如:MS SQL
- 商務邏輯盡可能寫在這,因為商務資料也在這
- 商務邏輯由於寫在DB層,過濾條件便須往後傳到SP,但並不是所有參數皆有值,如何處理參考如下
-
SP過濾條件範例
- 善用Sql表達式(Expression)的特性,盡量少用程序語言的寫法
- 為每個資料表建立系統編號(uuid)
- 善用uuid當作外來鍵的參考,取得其他相關資料表內容
-
取得資料表格結構說明
- 取得SP內容
DECLARE @spList varchar(max),
@SpName varchar(500),
@sourceSP nvarchar(max),
@olddelim nvarchar(32) = char(13) + Char(10),
@newdelim nchar(1) = NCHAR(9999)
Declare @Result Table (no int identity(1,1) ,content nvarchar(500))
Set @spList= 'SPName1,' --SP1
Set @spList += 'SPName2,' --SP2
DECLARE SPFile_cursor CURSOR FOR
SELECT value FROM STRING_SPLIT(@spList, ',') WHERE RTRIM(value) <> ''
OPEN SPFile_cursor
FETCH NEXT FROM SPFile_cursor INTO @SpName
WHILE @@FETCH_STATUS = 0
BEGIN
Set @sourceSP = ''
SELECT @sourceSP = OBJECT_DEFINITION(OBJECT_ID)
FROM sys.sql_modules where OBJECT_NAME(OBJECT_ID) = @SpName
Insert into @Result (content)
SELECT value FROM STRING_SPLIT(REPLACE(@sourceSP, @olddelim, @newdelim), @newdelim);
FETCH NEXT FROM SPFile_cursor INTO @SpName
End
CLOSE SPFile_cursor
DEALLOCATE SPFile_cursor
Select content From @Result order by no